package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.ajustes.Codec;
import br.com.vendor_engine.entidades.Login;
import br.com.vendor_engine.entidades.Pessoa;
import br.com.vendor_engine.interfaces.InterfaceLogin;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.List;
import org.hibernate.classic.Session;

public class RepositorioLogin implements InterfaceLogin {
    
    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Login l = new Login();
    
    @Override
    public void salvarLogin(Pessoa pessoa, String nomeLogin, String senhaLogin, int statusLogin){
        
        Codec codec = new Codec();
        String password = codec.encodeText(senhaLogin);
        
        
        l.setIdLogin(0);
        l.setNomeLogin(nomeLogin);
        l.setPessoa(pessoa);
        l.setSenhaLogin(password);
        l.setStatusLogin(statusLogin);
        
        s.beginTransaction();
        s.save(l);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }

    @Override
    public Login getLogin() {
        return l;
    }   

    @Override
    public void alterarLogin(int idLogin, Pessoa pessoa, String nomeLogin, String senhaLogin, 
    int statusLogin) {
        
        Codec codec = new Codec();
        String password = codec.encodeText(senhaLogin);
        
        
        l.setIdLogin(idLogin);
        l.setNomeLogin(nomeLogin);
        l.setPessoa(pessoa);
        l.setSenhaLogin(password);
        l.setStatusLogin(statusLogin);
        
        s.beginTransaction();
        s.save(l);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }

    @Override
    public List<Login> pegarTodosLogin() {        
        s.beginTransaction();
        List<Login> list = (List<Login>) s.createQuery("from Login").list();
        return list;
        
    }
    
}
